#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn=20;
int p[maxn][maxn]={0};
int k[400],t[maxn][maxn];
int a[maxn],b[maxn];
int s[2][4]{
  0,0,-1,1, 
  1,-1,0,0,
};
int n,m=0;
int text()
{
	for(int i=0;i<n;i++){
		int c=0,d=0;
		for(int j=0;j<n;j++){
			if(p[i][j]==1)
				c++;
			if(p[j][i]==1)
				d++;
		}
		if(d!=a[i]||c!=b[i])
			return 0; 
	}
	return 1;
}
void dfs(int x,int y,int step)
{
	if(x==n-1&&y==n-1){
		p[x][y]=1;
		k[step]=t[x][y];
		if(text()){
			for(int i=0;i<=step;i++)
				printf("%d ",k[i]);
		}
		p[x][y]=0; 
		return ;
	}
	for(int i=0;i<4;i++){
		int nx=x+s[0][i];
		int ny=y+s[1][i];
		if(nx<0||ny<0||nx>=n||ny>=n)
			continue;
		if(!p[nx][ny]){
			p[x][y]=1;
			k[step]=t[x][y];
			dfs(nx,ny,step+1);
			p[x][y]=0;
		}
	}
} 
int main()
{
	scanf("%d",&n);
	for(int i=0;i<n;i++)
		scanf("%d",&a[i]);
	for(int i=0;i<n;i++)
		scanf("%d",&b[i]);	
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			t[i][j]=m;
			m++;
		}
	}
	dfs(0,0,0);
	return 0;
}
